Dynamic programming algorithms are used to solve a variety of problems in real-world applications. For example, dynamic programming algorithms may be used in text string matching, genomics, gene sequencing, image processing, signal processing, speech recognition, economics and finance. A dynamic programming problem may comprise multiple sub-problems and an optimal solution to the dynamic programming problem may be constructed from optimal solutions to the individual sub-problems. Conventionally, parallel processing of a dynamic programming problem is limited by dependencies between sub-problems. For instance, a device cannot parallel process two sub-problems if a subsequent sub-problem depends on a solution computed in a previous sub-problem. Rather, computing a solution to the subsequent sub-problem is delayed until the solution to the previous sub-problem is computed and passed to the subsequent sub-problem.